/* CIS
* (C) Copyright IBM Japan, Ltd. 2013, All Rights Reserved.
*/
package com.beetlestech.nfe.main.biz.com.impl;

import com.beetlestech.nfe.fw.core.biz.AbstractDBLogic;
import com.beetlestech.nfe.fw.core.context.RequestContext;
import com.beetlestech.nfe.fw.core.util.StringUtil;
import com.beetlestech.nfe.main.biz.com.HbLogout;
import com.beetlestech.nfe.main.biz.constant.CtgCodeConstant;
import com.beetlestech.nfe.main.db.tbl.TloginlgDTO;

/**
 * 認証する Bizロジックの実装ロジック
 *
 * 変更履歴
 * REV.         変更日付           変更者              変更内容
 * -------      ---------------    ----------------    ------------------
 * 1.0          2014/02/21         GD 王昕             新規作成
 */
public class HbLogoutImpl extends AbstractDBLogic implements HbLogout {

	/* (non-Javadoc)
	 * @see com.beetlestech.nfe.main.biz.com.HbLogout#logout()
	 */
	@Override
	public Boolean logout() {
		Boolean logoutresult = false;
		recordLogout(CtgCodeConstant.TLOGINLG_RESULT.LOGOUT_SUCCESS.toString());
		clearSession();
		logoutresult = true;
		return logoutresult;
	}

	/* (non-Javadoc)
	 * @see com.beetlestech.nfe.main.biz.com.HbLogout#recordLogout(java.lang.String)
	 */
	@Override
	public void recordLogout(
			String result) {
		// ログインIDを取得する
		String loginId = getLoginId();
		// 職員IDを取得する
		String userId = getUserId();
		// セッションIDを取得する
		String sessionId = getSessionId();
		// wsNOを取得する
		String wsNo = getWsNo();
		// IPアドレスを取得する
		String ipAddress = getIpAddress();
		// ホスト名を取得する
		String hostName = getHostName();

		// ログインID、職員ID、wsNO、IPアドレス、セッションIDのうちはいずれかブランクの場合、そのまま処理終了する
		if (StringUtil.isNotEmpty(loginId) && StringUtil.isNotEmpty(userId) && StringUtil.isNotEmpty(sessionId) && StringUtil.isNotEmpty(wsNo)
				&& StringUtil.isNotEmpty(ipAddress)) {
			TloginlgDTO tloginlgDTO = TloginlgDTO.setDefaultValue();
			tloginlgDTO.setLoginId(loginId);
			tloginlgDTO.setShId(userId);
			tloginlgDTO.setEventDate(getCurrentDate());
			tloginlgDTO.setEventTime(getCurrentTime());
			tloginlgDTO.setResult(result);
			tloginlgDTO.setWsNo(wsNo);
			tloginlgDTO.setIpAddress(ipAddress);
			if (StringUtil.isNotEmpty(hostName)) {
				tloginlgDTO.setHostName(hostName);
			}
			tloginlgDTO.setSessionId(sessionId);
			// LOGINLGにログインログ情報を挿入する
			updateDAO.update(TloginlgDTO.INSERT, tloginlgDTO);
		}

	}

	/* (non-Javadoc)
	 * @see com.beetlestech.nfe.main.biz.com.HbLogout#clearSession()
	 */
	@Override
	public void clearSession() {
		//セッションからすべての情報を削除する
		RequestContext.open().removeElementFromSession(RequestContext.Key.All);
	}

}
